開始的第一天就生病QQ,好苦啊,我ㄉ鼻子好癢唷
本系列會將各種資料結構進行說明,今天要先介紹的就是 Stack 堆疊 ,進入本章結之前,都可以思考一個問題,資料結構就是為了要解決某項事情而生,也就是人想出來的解法,因此當我們在認識這些資料結構的時候,可以先拋開程式好難呀、觀念好難懂呀這種思維,先從生活中常看到的問題下手 (e.g 自助餐的碟子、洋芋片的罐子),就會好懂許多囉!
前言所提到的洋芋片罐子的例子,可以很清楚知道「先放進去的洋芋片最後才能吃」,也就是後進的會先吃到,因此就可以談到 Stack 最重要的特性
當我們從罐子拿起一片或放回不想吃的洋芋片的時候,就像是從堆疊裡面取出資料或是新增資料,因此我們也可以推出
create(){
// 宣告陣列 [1.....n]
// 宣告 top = 0
}
push(s,item){
if(s is not full){ // 當堆疊資料還沒滿的時候
top++;
s[top] = item; // item 放入 Top
}
}
pop(s){
if(s is not empty){ // 當堆疊資料並非空的時候
item = s[top]; // 先取得頂端資料
top--; // 將 top 往下移一格
return item
}
}
create(){
// top pointer initial nil
struct node{
int data;
struct node *next;
}
}
push(item){
t = new(node);
t->data = item;
t->next = top;
top = t;
}
pop(){
if(top is nil){
return "isempty";
}
else{
t = top;
item = top->data;
top = top->next;
delete(t);
}
return item;
}
請注意一下這邊只是告訴大家要怎麼寫,實際在寫的時候不要像我一樣一筆帶過唷ヽ(*´∀`)ノ゚